# 5. 最长回文子串

// 给你一个字符串 s,找到 s 中最长的回文子串
// 示例 1:
// 输入:s = "babad"
// 输出:"bab"
// 解释:"aba" 同样是符合题意的答案。
// 示例 2:
// 输入:s = "cbbd"
// 输出:"bb"

// 中心扩散的方式
// 两种情况
// 一种是回文字符串为单数
// 一种是回文字符串为双数
var longestPalindrome = function(s) {
  if (s.length < 2) return s;
  let str = "";

  // 中心扩散的方式, 两种情况, 一种是中心字符串为单数 一种是中心字符串为双数
  for (let i = 0; i < s.length; i++) {
    getMaxStr(i, i);
    getMaxStr(i, i + 1);
  }

  function getMaxStr(left, right) {
    while (left >= 0 && right < s.length && s[left] === s[right]) {
      left--;
      right++;
    }

    if (right - left - 1 > str.length) {
      str = s.slice(left + 1, right);
    }
  }

  return str;
};

// const s = "cbbd";
const s = "babad";

console.log(longestPalindrome(s));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Last Updated: 6/27/2023, 7:40:45 PM